#ifndef ISERIALIZABLE_H
#define ISERIALIZABLE_H

template <class T, class U>
class QHash;

template <class T>
class QList;

class QString;

class QVariant;

typedef QList<QVariant> QVariantList;

namespace core
{
class SerializationEngine;

class ISerializable
{
public:
    virtual bool doActionForProperty(const QString& property,
        const QVariantList& value, const SerializationEngine& helper) = 0;
    virtual void deserializationFinished(bool ok) = 0;
    virtual QHash<QString, QVariantList> serializationData(
        const SerializationEngine& helper) const = 0;
};

} // namespace core

#endif
